<?php
// 启动会话
session_start();
//  设数据库连接信息
require_once 'databaseConnection.php';
// 创建数据库连接
try {
  $conn = connectToDatabase();
  // 设置 PDO 错误模式为异常
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
  die("数据库连接失败: " . $e->getMessage());
}
// 处理用户登录请求
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $phone = $_POST['phone'];
  $password = $_POST['password'];
  // 在数据库中获取用户的哈希密码、账户信息和用户名
  $stmt = $conn->prepare("SELECT account_id, phone, role, password, username, status FROM account WHERE phone=:phone");
  $stmt->bindParam(':phone', $phone);
  $stmt->execute();
  $row = $stmt->fetch();
  if ($row) {
    $account_id = $row['account_id'];
    $hashed_password = $row['password'];
    $username = $row['username'];
    $role = $row['role'];
    $status = $row['status'];
    // 检查账号状态
    if ($status === 'inactive') {
      // 账号已失效，向页面输出提示信息
      echo '账号已失效，请联系管理员';
    } else {
      // 执行密码验证
      if (password_verify($password, $hashed_password)) {
        // 用户验证通过，存储用户信息到会话中
        $_SESSION['account_id'] = $account_id;
        $_SESSION['phone'] = $phone;
        $_SESSION['username'] = $username; // 将用户名存储到会话中
        $_SESSION['role'] = $role; // 把职业储存在会话中
        $_SESSION['loggedin'] = true;
        // 更新最后登录时间和登录次数
        $update_sql = "UPDATE account SET lastloginat = NOW(), logincount = logincount + 1 WHERE phone = :phone";
        $stmt = $conn->prepare($update_sql);
        $stmt->bindParam(':phone', $phone);
        $stmt->execute();
        // 返回登录成功的响应
        echo 'success';
      } else {
        // 用户验证失败
        echo '账号或者密码错误，请重试';
      }
    }
  } else {
    // 用户验证失败
    echo 'fail';
  }
}
// 关闭数据库连接
$conn = null;
?>